package com.glorystone.ins.vo;

import com.glorystone.ins.convert.Converter;
import com.glorystone.ins.domain.Channel;
import com.glorystone.ins.domain.Member;
import com.google.common.collect.Lists;
import lombok.Data;
import lombok.val;
import org.springframework.beans.BeanUtils;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.util.List;

/**
 * @author:haoguodong
 * @Date:Created in 20:47 2018/3/15
 */
public @Data class ChannelVO implements Converter<ChannelVO, Channel> {

    private Long tid;

    private Integer userId;
    /**
     * 渠道负责人id（业务员）
     */
    private Integer masterUserId;
    /**
     * 渠道类型 类别（1个人2企业）
     */
    private Integer type;
    /**
     * 公司注册名
     */
    private String companyRegisterName;
    /**
     * 公司注册日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate companyRegisterDate;
    /**
     * 公司营业期限开始日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate businessStartDate;

    /**
     * 公司营业期限到期日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate businessEndDate;

    /**
     * 公司信用代码
     */
    private String creditCode;
    /**
     * 银行账号开户名
     */
    private String accountName;

    /**
     * 银行账号
     */
    private String accountNo;
    /**
     * 银行id ，字典
     */
    private String bankName;
    /**
     * 支行名称
     */
    private String bankBranchName;
    /**
     * 支付宝
     */
    private String alipayNo;

    /**
     * 微信
     */
    private String weChatNo;

    /**
     * 备注
     */
    private String remark;


    /**
     * 联系人信息
     */
    private Member contact;
    /**
     * 法人信息
     */
    private Member legalPerson;

    /**
     * 实际控制人
     */
    private Member actualController;

    private List<Member> seniorManagerList;

    private String jobNumber;

    @Override
    public Channel convert(ChannelVO channelVO) {
        val t = new Channel();
        BeanUtils.copyProperties(channelVO, t);
        return t;
    }

    @Override
    public List<Channel> convertList(List<ChannelVO> channelVOS) {
        List<Channel> list = Lists.newArrayListWithCapacity(channelVOS.size());
        channelVOS.forEach(i ->{
            list.add(convert(i));
        });
        return list;
    }
}
